"use client"; import { DepositsTypes } from "@/api/depositsApi"; import { getUserRechargeApi } from "@/api/user"; import Box from "@/components/Box"; import ButtonOwn from "@/components/ButtonOwn"; import { useUserInfoStore } from "@/stores/useUserInfoStore"; import { neReg } from "@/utils"; import { Form, Input, Toast } from "antd-mobile"; import { FormInstance } from "antd-mobile/es/components/form"; import { useTranslations } from "next-intl"; import { FC, Fragment, useRef, useState } from "react"; import actions from "@/app/[locale]/(TabBar)/deposit/actions"; import "@/styles/deposit.scss"; interface Props { deposits: DepositsTypes[]; } const DepositData: FC = (props) => { const { deposits } = props; const t = useTranslations(); const userInfo = useUserInfoStore((state) => state.userInfo); const [activeType, setActiveType] = useState(deposits[0]); const formInstanceRef = useRef(null); let [amount, setAmount] = useState(undefined); const titleChangeHandler = (item: DepositsTypes, index: number) => { setAmount(undefined); setActiveType(item); formInstanceRef.current?.resetFields(); }; const isStrictMode = true; const onFinish = (values: any) => { const params = { ...values, channel_id: activeType.id, amount: +values.amount }; getUserRechargeApi(params) .then(async (res) => { formInstanceRef.current?.resetFields(); Toast.show({ icon: "success", content: t("code.200"), maskClickable: false }); setAmount(undefined); if (res.data.pay_url) { window.open(res.data.pay_url); } await actions(); }) .catch((error) => { Toast.show({ content: t(`code${error.data.code}`), maskClickable: false }); }); }; const onValuesChange = (changeValues: any) => { if (changeValues.amount) { setAmount(changeValues.amount); } }; const amountChange = (value: number) => { formInstanceRef.current?.setFieldValue("amount", value); setAmount(value); }; const amountValidator = (rules: any, value: any) => { if (!value) return Promise.reject(new Error(t("form.amount"))); if (+value < activeType.min_amount) return Promise.reject( new Error(t("form.amountMinReg", { amount: activeType.min_amount })) ); if (+value > activeType.max_amount) return Promise.reject( new Error(t("form.amountMaxReg", { amount: activeType.max_amount })) ); return Promise.resolve(); }; return (
{deposits.map((item, index) => { return (

titleChangeHandler(item, index)} > {item.name}

); })}
{t("DepositPage.DepositarAgora")} } initialValues={userInfo} onFinish={onFinish} onValuesChange={onValuesChange} > {isStrictMode ? ( <> ) : null}
    {activeType.products.map((item, index) => (
  • amountChange(item.amount)} > {!!item.badge && }
    {/* */} R$ {item.amount}
    {item.rewards && item.rewards .sort((p, n) => p.coin_type - n.coin_type) .map((reward, index) => { return ( {reward.ratio > 0 ? ( {t("DepositPage.Oferecer")}{" "} {reward.ratio}% ) : null} {reward.reward > 0 ? ( + {reward.reward} ) : null} ); })}
  • ))}
{t("DepositPage.depositTips")}
); }; export default DepositData;